Skip to content

ci: bootstrap of release strategy change from rolling to versioned#932

Draft
gildesmarais wants to merge 4 commits intomainfrom
ci/release-me-please
Draft

ci: bootstrap of release strategy change from rolling to versioned#932
gildesmarais wants to merge 4 commits intomainfrom
ci/release-me-please

Conversation

@gildesmarais
Copy link
Copy Markdown
Member

@gildesmarais gildesmarais commented Mar 29, 2026

This pull request introduces automated release management and versioning for the project, including integration with release-please, Docker image publishing tied to releases, and version tracking. It also adds supporting configuration, version files, and tests. The most important changes are grouped below:

Release Automation & Versioning

  • Added .github/workflows/release.yml to automate releases using release-please, generate changelogs, and publish Docker images only when a new release is created. This includes improved tagging and metadata for Docker images.
  • Introduced .github/release-please-config.json and .github/.release-please-manifest.json to configure release-please for Ruby, specifying the version file and changelog path. [1] [2]
  • Added config/version.rb to define the canonical application version (1.0.0) in Ruby, and updated tests to check this version. [1] [2]
  • Updated OpenAPI spec generation to use the canonical version constant instead of a hardcoded string.
  • Added a CHANGELOG.md file to track notable changes in releases.

Docker & CI Improvements

  • Removed the inlined Docker publish job from .github/workflows/ci.yml and moved Docker image building/publishing to the new release workflow, ensuring images are only published for tagged releases. Also, Docker images now include build tag and git SHA as build arguments and environment variables. [1] [2]

Release Artifact Refresh

  • Added .github/workflows/release_artifacts.yml to automatically refresh and commit generated OpenAPI artifacts on release-please PRs, ensuring artifacts remain up-to-date.

@gildesmarais gildesmarais force-pushed the ci/release-me-please branch from d6deffc to 6fa83c7 Compare April 29, 2026 15:35
@gildesmarais gildesmarais force-pushed the ci/release-me-please branch from 141fd7f to 71065bc Compare April 29, 2026 18:45
@gildesmarais gildesmarais marked this pull request as ready for review April 29, 2026 18:46
@gildesmarais gildesmarais requested a review from Copilot April 29, 2026 18:46
@gildesmarais gildesmarais changed the title ci: add please-release ci: bootstrap of release strategy change from rolling to versioned Apr 29, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces release automation via release-please, centralizes the application version into config/version.rb, and adjusts CI/release workflows to publish Docker images and keep generated OpenAPI artifacts up to date.

Changes:

  • Add config/version.rb as the canonical version source and wire it into OpenAPI generation.
  • Add release-please configuration + manifest and introduce release.yml / release_artifacts.yml workflows.
  • Move Docker publish responsibilities out of the main CI workflow into the release workflow; add build metadata env vars to the Docker image.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
spec/support/openapi.rb Uses the centralized app version constant for OpenAPI metadata.
spec/html2rss/web_spec.rb Adds a spec asserting the app VERSION constant.
config/version.rb Introduces a canonical Html2rss::Web::VERSION constant for release tooling and runtime use.
Dockerfile Adds BUILD_TAG/GIT_SHA build args and exports them as runtime env vars.
CHANGELOG.md Adds an initial changelog file for release-please to maintain.
.github/workflows/release_artifacts.yml Adds an automation workflow to refresh/commit generated OpenAPI artifacts on release-please PRs.
.github/workflows/release.yml Adds a release-please driven release workflow and Docker publish job.
.github/workflows/ci.yml Removes the main-branch Docker publish job from CI (publish now handled in release workflow).
.github/release-please-config.json Configures release-please to manage Ruby releases using config/version.rb and CHANGELOG.md.
.github/.release-please-manifest.json Seeds release-please manifest with the current version.

Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release_artifacts.yml
Comment thread spec/html2rss/web_spec.rb Outdated
Comment thread .github/workflows/release.yml
@gildesmarais gildesmarais marked this pull request as draft April 29, 2026 18:52
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a versioned release process (moving away from rolling releases) by adding release-please configuration, a canonical Ruby version constant, and GitHub Actions workflows to create releases, publish Docker images on release, and keep generated OpenAPI artifacts in sync with release PRs.

Changes:

  • Add release automation via release-please and a release workflow that publishes Docker images only when a release is created.
  • Introduce Html2rss::Web::VERSION as the canonical version source and update OpenAPI/test usage accordingly.
  • Add a workflow to verify/refresh generated OpenAPI artifacts on release-please branches, plus an initial CHANGELOG.md.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
spec/support/openapi.rb Switch OpenAPI application version from a hardcoded value to the canonical version constant.
spec/html2rss/web_spec.rb Add a spec validating presence/format of the canonical version constant.
config/version.rb Define Html2rss::Web::VERSION for release/version tracking.
Dockerfile Add build metadata (BUILD_TAG, GIT_SHA) as build args and runtime env vars.
CHANGELOG.md Introduce a changelog file for release-please managed releases.
.github/workflows/release_artifacts.yml Add automation to verify/refresh generated OpenAPI artifacts on release-please PRs/branch.
.github/workflows/release.yml Add release-please driven release workflow plus Docker publishing on release creation.
.github/workflows/ci.yml Remove Docker publishing from CI so publishing happens only on releases.
.github/release-please-config.json Configure release-please for Ruby releases, version file, and changelog path.
.github/.release-please-manifest.json Initialize release-please manifest with the starting version.

Comment thread .github/workflows/release_artifacts.yml
Comment thread spec/support/openapi.rb Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants